#容器学习
#序列：内容连续、有序，均可使用下标索引的一类的数据容器
#列表、元组、字符串、均可以视为序列

#序列的切片操作 从一个序列中取出一个子序列的操作
# 对原来的序列不产生任何影响，而是产生了一个新序列
#语法：
# 序列[起始下标：结束下标：步长]
#步长默认是1 正数表示正向序列，负数表示反向序列
#起始下标留空，表示从头开始；结束下标留空，表示才到结尾位置结束（结束下标位置是不要的）
# test=[1,2,3,5,7,8]
# newtest=test[2:4:1]
# for i in newtest:
#     print(i,end=' ')

#集合：带去重功能，不是有序的（不支持重复元素）
#基本语法：
#{元素1，元素2，元素3.....}
#set()  空集合
# myset={'xiao','feng','zhang','xiao','zhang','feng'}
# set1={'xiao','liu'}
#不支持下标索引问
#允许修改  添加、移除、随机取出

#myset.add('liu')
#print(myset)

#myset.remove('xiao')
# print(myset)

#print(myset.pop())

#清空
# myset.clear()
# print(myset)

#1.去两个集合的差集  以myset为基准，myset里面有的，而set1里面没有的
# print(myset.difference(set1))
#2.消除差集  基准改变，另一个不改变(在基准中删除相同的元素)
# print(myset)
# myset.difference_update(set1)
# print(myset)
#3.集合的合并
#print(myset.union(set1))


#统计集合的元素数量
# print(len(myset))

#集合的遍历  不支持下标索引，不支持while循环进行遍历
# for i in myset:
#     print(i,end=' ')




#字典的基础定义
# 通过key找到对应的value,不支持下标索引(while)
#基础语法:  key不允许重复,key是不能为字典类型的
#{}或者dict{}   表示空的字典
# {key:value,......}
#mydict={'xiaofeng':93,'xiaozhang':99}

#基于key找到value
#print(mydict['xiaofeng'])

#定义嵌套字典
# dict1={'wang':{'yuwen':77,'shuxue':33},
#        'zhou':{'yuwen':34,'suxue':99}}

#从嵌套字典中获取数据
#print(dict1['zhou']['yuwen'])


#字典的常用操作
#修改
#增加：新增、更新(存在)
# mydict['xiaofeng']=77
# mydict['xiaoliu']=44
# print(mydict)
#删除元素
# mydict.pop('xiaofeng')  带有返回值
# print(mydict)
#清空元素
# mydict.clear()
# print(mydict)
#获取全部的key
#print(mydict.keys())
#遍历字典
# for i in mydict.keys():
#     print(f"{i}:{mydict[i]}",end=' ')
# for i in mydict:
#     print(f"{i}:{mydict[i]}", end=' ')
#统计元素数量 len
# print(len(mydict))